package com.iuie.ns.datum.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.iuie.ns.datum.vo.TableFieldVO;
import com.iuie.ns.frame.persistence.annotations.MyBatisRepository;

/**
 * 表的字段-mapper
 * @author liujie
 * @date 2018-01-28 13:25:33
 */
@MyBatisRepository
public interface TableFieldMapper {

	
	/**
	 * 根据tableId查询表的字段列表
	 * @param tableId
	 * @return
	 */
	List<TableFieldVO> findFieldsByTableId(@Param("tableId") Long tableId);
	
	/**
	 * 批量新增
	 * @param items
	 */
	void batchAdd(@Param("records") List<TableFieldVO> records);

	/**
	 * 根据表Id删除该表的所有字段
	 * @param tableId
	 */
	Integer deleteFieldsByTableId(@Param("tableId") Long tableId);

	/**
	 * 新增一个字段
	 * @param field
	 */
	void addOne(@Param("field") TableFieldVO field);

	/**
	 * 根据ID删除一个字段
	 * @param id
	 */
	void deleteById(Long id);

	/**
	 * 根据表ID和字段名查询字段
	 * @param tableId
	 * @param fieldName
	 * @return
	 */
	TableFieldVO findFieldByFieldName(@Param("tableId") Long tableId, @Param("fieldName") String fieldName);

	/**
	 * 根据Id查询单条记录
	 * @param fieldId
	 * @return
	 */
	TableFieldVO findById(@Param("fieldId") Long fieldId);

	/**
	 * 单条更新
	 * @param field
	 */
	void updateOne(TableFieldVO field);
	
	/**
	 * 更新doQuery属性
	 * @param fieldId
	 * @param doQuery
	 */
	void updateDoQuery(@Param("fieldId") Long fieldId, @Param("doQuery") String doQuery);
	
	/**
	 * 更新queryMode属性
	 * @param fieldId
	 * @param queryMode
	 */
	void updateQueryMode(@Param("fieldId") Long fieldId, @Param("queryMode") String queryMode);
	
	/**
	 * 更新doUpdate属性
	 * @param fieldId
	 * @param doUpdate
	 */
	void updateDoUpdate(@Param("fieldId") Long fieldId, @Param("doUpdate") String doUpdate);

	/**
	 * 更新allowNull属性
	 * @param fieldId
	 * @param allowNull
	 * @date 2018年5月30日上午8:43:00
	 */
	void updateAllowNull(@Param("fieldId") Long fieldId, @Param("allowNull") String allowNull);

	/**
	 * 更新isPrimaryKey属性
	 * @param fieldId
	 * @param isPrimaryKey
	 * @date 2018年5月30日上午8:56:18
	 */
	void updateIsPrimaryKey(@Param("fieldId") Long fieldId, @Param("isPrimaryKey") String isPrimaryKey);

	/**
	 * 更新display属性
	 * @param fieldId
	 * @param display
	 * @author iuie
	 * @date 2018年5月30日 上午10:39:33
	 */
	void updateDisplay(@Param("fieldId") Long fieldId, @Param("display") String display);

	/**
	 * 更新comment属性
	 * @param fieldId
	 * @param comment
	 * @author iuie
	 * @date 2018年5月30日 下午12:04:01
	 */
	void updateComment(@Param("fieldId") Long fieldId, @Param("comment") String comment);
	
}
